.code asm01 PROC a:dword, b:dword, c:dword ; xmm0 <- a ; xmm1 <- b ; xmm2 <- c local maxi:qword movss a, xmm0 movss b, xmm1 movss c, xmm2 fld a ;a fld b ;b, a fld c ;c, b, a fcomi st, st(1) ;c, b , a (c>b) ja CC fxch st(1) ;b, c, a CC: fcomi st, st(2) ;max(b, c), c|b, a ja KONIEC fxch st(2) ;a, max(b,c), b|c KONIEC: fstp maxi ; a|b|c, a|b|c movsd xmm0, maxi fstp st ;a|b|c fstp st ; ret asm01 ENDP asm02 PROC a:qword, i:dword, b:qword, j:dword, c:qword, k:dword ; xmm0 <- a ;rdx <- i ;xmm2 <- b ;r9 <- j ;stack <- c ;stack <- k movsd a, xmm0 mov i, edx movsd b, xmm2 mov j, r9d fld a ;a fld st ;a, a fmul ;a^2 fld st ;a^2, a^2 fmul ;a^4 fild i ;i, a^4 mov i, 16 fild i ;16, i, a^4 fmul ;16i, a^4 fmul ;16ia^4 fld b ;b, 16ia^4 fld st ;b, b, 16ia^4 fld st ;b, b, b, 16ia^4 fmul ;bb, b, 16ia^4 fmul ;b^3, 16ia^4 fild j ;j, b^3, 16ia^4 mov i, 32 fild i ;32, j, b^3, 16ia^4 fmul ;32j, b^3, 16ia^4 fmul ;32jb^3, 16ia^4 fadd ;32jb^3 + 16ia^4 fld c ;c, 32jb^3 + 16ia^4 fld st ;c, c, 32jb^3 + 16ia^4 fmul ;c^2, 32jb^3 + 16ia^4 fild k ;k, c^2, 32jb^3 + 16ia^4 mov i, 64 fild i ;64, k, c^2, 32jb^3 + 16ia^4 fmul ;64k, c^2, 32jb^3 + 16ia^4 fmul ;64kc^2, 32jb^3 + 16ia^4 mov i, 128 fild i ;128, 64kc^2, 32jb^3 + 16ia^4 fldl2t ;log2(10), 128, 64kc^2, 32jb^3 + 16ia^4 fmul ;log2(10)*128, 64kc^2, 32jb^3 + 16ia^4 fsub ;64kc^2 -log2(10)*128, 32jb^3 + 16ia^4 fdiv ;32jb^3 + 16ia^4/64kc^2 -log2(10)*128 fstp a movsd xmm0, a ret asm02 ENDP asm03 PROC a:dword, b:dword, x:dword ;xmm0 <- a ;xmm1 <- b ;xmm2 <- x local sto:qword movss a, xmm0 movss b, xmm1 movss x, xmm2 mov sto, 180 fild sto ;180 fldpi ;pi, 180 fdivr ;pi/180 fld st ;pi/180, pi/180 fld x ;x, pi/180, pi/180 fld b ;b, x, pi/180, pi/180 fmul ;bx, pi/180, pi/180 fmul ;bx*pi/180, pi/180 fcos ;cos(bx*pi/180), pi/180 fld st ;cos(bx*pi/180), cos(bx*pi/180), pi/180 fmul ;cos^2(bx*pi/180), pi/180 fxch st(1) ;pi/180, cos^2(bx*pi/180) fld x ;x, pi/180, cos^2(bx*pi/180) fld a ;a, x, pi/180, cos^2(bx*pi/180) fmul ;ax, pi/180, cos^2(bx*pi/180) fmul ;axpi/180, cos^2(bx*pi/180) fld st ;axpi/180, axpi/180, cos^2(bx*pi/180) fmul ;(axpi/180)^2, cos^2(bx*pi/180) fsin ;sin(axpi/180)^2, cos^2(bx*pi/180) fsubr ;sin(axpi/180)^2 - cos^2(bx*pi/180) fstp sto movsd xmm0, sto ret asm03 ENDP asm04 PROC x:qword ;xmm0 <- x movsd x, xmm0 fld x ;x fldz ;0, x fcomip st, st(1) ;x jbe WIEKSZY fldln2 ;ln2, x fmul ;x*ln2 jmp KONIEC WIEKSZY: fld1 ;1, x fxch st(1) ;x, 1 fyl2xp1 ;1*log(x+1) KONIEC: fstp x movsd xmm0, x ret asm04 ENDP asm05 PROC x:qword, y:qword, sizee:dword ; rcx <- address of y vector ; rdx <- address of x vector ; r8d <- size local help: qword movsxd r8, r8d mov help, 16 PETLA: fld dword ptr[rdx + 4* r8 - 4] ;x[i] fld st ;x[i], x[i] fld st ;x[i], x[i], x[i] fmul ;x[i]^2, x[i] fsubr ;x[i]^2 - x[i] fld1 ;1, x[i]^2 - x[i] fadd ;x[i]^2 - x[i] + 1 fsqrt ;sqrt(x[i]^2 - x[i] + 1 ) fild help ;16, sqrt(x[i]^2 - x[i] + 1 ) fmul ;16*sqrt(x[i]^2 - x[i] + 1 ) fstp dword ptr[rcx + 4*r8 - 4] ; dec r8 jnz PETLA ret asm05 ENDP asm06 PROC a: qword, x:qword ;xmm0 <- a ;xmm1 <- x movsd a, xmm0 movsd x, xmm1 fld1 ;1 fld a ;a, 1 fyl2x ;1*log2(a) fld1 ;1, log2(a) fld x ;x, 1, log2(a) fyl2x ;1*log2(x), log2(a) fdiv ;log2(a)/ log2(x) fstp a movsd xmm0, a ret asm06 ENDP asm07 PROC ret asm07 ENDP asm08 PROC x:qword, y:qword, a:dword, sizee:dword ;rcx <- float* x ;rdx <- float* y ;xmm2 <- float a ;r9d <- size movsxd r9, r9d shl r9, 2 vbroadcastss ymm1, xmm2 PETLA: sub r9, 32 vmovups ymm0, ymmword ptr[rcx + r9] vmulps ymm0, ymm0, ymm0 vaddps ymm0, ymm0, ymm1 vmovups ymmword ptr[rdx + r9], ymm0 jnz PETLA ; vmulps ymm0, ymm0, ymm0 ret asm08 ENDP asm09 PROC a:qword, b:qword, c:qword, d:qword, x:qword ; xmm0 <- a ; xmm1 <- b ; xmm2 <- c ; xmm3 <- d ; stack <- x ; y = 15ax^3 + 10bx^2 + 5cx + d mov rax, 5 vcvtsi2sd xmm6, xmm6, rax ;xmm6 = 5 vmovsd xmm5, x ;xmm5 = x vmulsd xmm2, xmm2, xmm5 ;cx vmulsd xmm2, xmm2, xmm6 ;5cx vaddsd xmm2, xmm2, xmm3 ;5cx+d mov rax, 10 vcvtsi2sd xmm6, xmm6, rax ;xmm6 = 10 vmulsd xmm1, xmm1, xmm5 ;bx vmulsd xmm1, xmm1, xmm5 ;bx^2 vmulsd xmm1, xmm1, xmm6 ;10*bx^2 vaddsd xmm1, xmm1, xmm2 ;10*bx^2 + 5cx+d mov rax, 15 vcvtsi2sd xmm6, xmm6, rax ;xmm6 = 15 vmulsd xmm0, xmm0, xmm5 ;ax vmulsd xmm0, xmm0, xmm5 ;ax^2 vmulsd xmm0, xmm0, xmm5 ;ax^3 vmulsd xmm0, xmm0, xmm6 ;15ax^3 vaddsd xmm0, xmm0, xmm1 ;15ax^3, 10*bx^2 + 5cx+d ret asm09 ENDP END